MISSCLICK ENGINE
Missclick Engine is an Open-Source 3D Game Engine forked from Null Engine and further developed by Missclick Studios’s programming team.
The engine is built from 4 main visual studio projects. Two of them are the engine and the game executables that share code with a core dynamic library (.dll) file built on the third project. Finally, the fourth and last project is for the scripting system.
Here is a detailed list of them with extra information on them:
ANIMATIONS
The Animations System allows the user to import fbx files with animations in them and let the user see the fully rigged models and play the animations.
It features a Clips system which makes it so the user can cut the animations into shorter cuts of animation. These clips can be edited, added or deleted at the user’s will.
Another very important feature is the Track system which allows for the creation of different Tracks that take a root bone and play a certain Clip only affecting the bones that are children of this specified bone. This allowed us to create the unique feature for Mando which allows it to walk and aim in different directions at the same time.
PARTICLES
The Particle System allows the user to create different Particle Emitters which are able to shoot different images in various ways.
The system features a Modular system in which Emitters can have various modules which add a certain behaviour to them. This makes for a widely modular system with a lot of modifiable modules and different combinations.
USER INTERFACE
The engine ui system lets the user implement 2D ui for the game. The main idea of the system is the creation of a canvas that contains different ui elements in the order for rendering. Then, from the scripting system you can push or pop this canvas to activate the full canvas(menu) with all the elements. Once it gets activated the elements get rendered and the navigation logic from the top canvas gets updated.
The system has a base Ui component from which the different ui implementations inherit. All the elements supported are images, buttons, checkbox and sliders.All these components support texture coordinate manipulation letting the creation of a ui atlas or sprite sheets.
PHYSICS
The physics system uses the library PhysX, developed by Nvidia that allows us to simulate physics with high accuracy and colliders that can be attached to specific game objects. Implementing the system to the engine we added features like collider rendering and collision filtering. This system was used to develop all the movements of the entities and bullet behaviour.
AUDIO
Audio System allows the user to create Components Audio Source and Audio Listener, all the audio information from the audio source functions (Play, Pause, Resume...) is received by the audio listener while playing and sent to the middleware Wwise, which handles the information and sends a response back, explaining how should act the audio source.
SCRIPTING
The engine scripting system is written and supports the C/C++ languages. It is built to compile all the scripts into a dynamic library that gets linked to the game/engine at runtime. All the scripts inherit from a base script class with the start/update/cleanup cycle and the support from collision detection functions to override. You can include any exported engine header to use on the scripts.
The system supports inspector variables from atomic types, some std library containers like string and vectors and enums. The system also supports hot reloading to enable the developer to edit his code at runtime without the need to close and restart the application each time a change is made.
SHADERS
Using a shader pipeline allows the engine to render the scene and make the necesary calculations through the GPU, optimizing the performance and enabling to create various effetcs.
The system features uniform modification from the engine inspector, on-engine shader editor and throughout the development all the renders transitioned from standard OpenGl rendering to shaders (GLSL).
The system had numerous improvements such as Cel shading, Outlining and Lighting implementation.
External Libraries Used
SDLv.2.0
OpenGL v4.6
MathGeoLib v1.5
Parson v1.1.0
Assimp v3.1.1
DevIL v1.8.0
glew v2.1.0
ImGui v1.79
ImGuizmo v1.61
PhysFS v3.0.2
PhysX v4.1
Wwise v.2019.2.9
mmgr